import 'dart:async';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:speed_app/common/extension/ex_string.dart';
import '../../../common/routers/names.dart';
import '../../../common/utils/loading.dart';

class RegisterController extends GetxController {
  RegisterController();

  TextEditingController phoneController = TextEditingController(); // 手机号
  TextEditingController codeController = TextEditingController(); // 手机号
  TextEditingController passwordController = TextEditingController(); // 密码

  /// 密码是否密文输入
  RxBool isSecrecy = true.obs;

  /// 是否同意了协议内容
  RxBool isAgree = false.obs;

  Timer? _countDownTimer; // 计时器
  RxString sendText = "获取验证码".obs;  // 验证码提示
  int _countDownNum = 59;// 计时时长


  _initData() {
    update(['register']);
  }

  // @override
  // void onInit() {
  //   super.onInit();
  // }

  // @override
  // void onReady() {
  //   super.onReady();
  // }

  @override
  void onClose() {
    super.onClose();
    phoneController.dispose();
    codeController.dispose();
    passwordController.dispose();
    if (_countDownTimer != null) {
      _countDownTimer!.cancel();
      _countDownTimer=null;
    }
  }

  /// 开始注册
  void onRegister(){
    if (isAgree.value == false) {
      Loading.toast('请您阅读并同意用户协议及隐私政策');
      return;
    }
    String phone = phoneController.text.trim();
    if (phone.isEmpty) {
      Loading.toast('请输入手机号');
      return;
    }
    if (!phone.isValidPhoneNumber) {
      Loading.toast('请输入正确的手机号');
      return;
    }
    String code = codeController.text.trim();
    if (code.isEmpty) {
      Loading.toast('请输入验证码');
      return;
    }
    String password = passwordController.text.trim();
    if (password.isEmpty) {
      Loading.toast('请输入密码');
      return;
    }
    // 跳转至设置性别页面
    _onSetGender();
  }

  // 跳转至设置性别页面
  void _onSetGender(){

  }
  
  // 开始计时
  void _timerFile() {
    if (_countDownTimer != null) return;
    // Timer的第一秒倒计时是有一点延迟的，为了立刻显示效果可以添加下一行。
    sendText.value = '(${_countDownNum--})s';
    _countDownTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
      if (_countDownNum > 0) {
        sendText.value = '(${_countDownNum--})s';
      } else {
        sendText.value = '获取验证码';
        _countDownNum = 59;
        _countDownTimer!.cancel();
        _countDownTimer=null;
      }
    });
  }

  /// 获取验证码
  Future onSendCode() async {

    if (sendText.value.contains('获取验证码')) {
      // 获取手机号
      String value = phoneController.text.toString();
      bool matched = value.isValidPhoneNumber;
      if (value.isNotEmpty) {
        if (matched == false) {
          Loading.toast("请填写正确的手机号");
        } else {
          // 接口请求,开始计时
          _timerFile();
        }
      } else {
        Loading.toast("请输入手机号");
      }
    }
  }



}
